Andreas Alexopoulos

30 / 08 / 2016

Introduction

The Beam Loss Monitoring system of the Large Hadron Collider close to the interaction points contains mostly gas ionization chambers working at room temperature, located far from the superconducting coils of the magnets. The system records particles lost from circulating proton beams, but is also sensitive to particles coming from the experimental collisions, which do not contribute significantly to the heat deposition in the superconducting coils. In the future, with beams of higher brightness resulting in higher luminosity, distinguishing between these interaction products and dangerous quench-provoking beam losses from the circulating beams will be difficult. It is proposed to optimize by locating beam loss monitors inside the cold mass of the magnets, housing the superconducting coils, in a super-fluid helium environment, at $1.9 K$. The dose then measured by such cryogenic beam loss monitors would more precisely correspond to the real dose deposited in the coil [1].

Irradiation tests of silicon & diamond detectors have been performed so that their performance and degradation under irradiation could be studied.

In this contribution, data acquired during the cryogenic irradiation test of silicon and diamond detectors will be presented. The test took place between 28/10/2015 and 16/11/2015 at the IRRAD facility using a $24 GeV/c$ beam from the Proton Synchrotron.

Initialization

Python Packages

The following analysis was performed using Python. In order for the notebook to run, an installation of Python version 2.7 is necessary, as well as additional packages such as jupyter, numpy, scipy and matplotlib.


In [1]:
from __future__ import print_function, division

import warnings
from collections import deque
from datetime import datetime, timedelta
from time import ctime
from os.path import abspath, join
from itertools import cycle

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Patch
from matplotlib.lines import Line2D
from matplotlib.dates import DateFormatter
from matplotlib import rc

from pytoolbox.syncdatasets import SyncDatasets

rc('text', usetex=True)
rc('font', family='serif', serif='Times New Roman')

%matplotlib inline
# Not always a good idea
# %matplotlib nbagg


/cvmfs/sft.cern.ch/lcg/releases/matplotlib/1.5.1-763af/x86_64-slc6-gcc49-opt/lib/python2.7/site-packages/matplotlib-1.5.1-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')

Input data

Input for the analysis are data concerning the beam variables, as well as the detectors response. In addition, details which describe the different settings and actions done during the irradiation test have been introduced as constants and used.


In [8]:
###############################################################################
#                              INPUT DATA                                     #
###############################################################################

DATA_DIR = '/home/andalexo/cernbox/projects/cryoblm/2015_CryoIRRAD/20160801_Analysis/'

AL_DOSE = np.mean([6.46e15, 7.23e15])      # FRONT, BACK, dosimetry
AL_DOSE_ERR = 0.07

FILENAME_SEC = join(abspath(DATA_DIR), 'sec_counts.csv')
SEC_DT_FMT = '%Y-%m-%d %H:%M:%S.%f'

FILENAME_BPM = join(abspath(DATA_DIR), 'bpm3_raw.csv')
BPM_DT_FMT = '%d/%m/%Y %H:%M:%S'

BEAM_TIME_INTERVALS = [('2015-10-28 19:37:22.0', '2015-10-28 21:00:00.0'), 
                       ('2015-10-29 18:43:39.0', '2015-10-29 21:12:28.0'), 
                       ('2015-10-30 08:42:41.0', '2015-11-16 06:00:00.0')]

# Used for the correlation of detectors charge and bpm charge
FILENAME_QMBOX = join(abspath(DATA_DIR), 'qmbox_sum_out.csv')
QMBOX_DT_FMT = '%Y/%m/%d %H:%M:%S.%f'

In [9]:
vl_init = sorted([item for item in dir() if item[0] != '_'] + ['vl_init'])
print('Memory init [%d]\n%s.' % (len(vl_init), vl_init) )


Memory init [35]
['AL_DOSE', 'AL_DOSE_ERR', 'BEAM_TIME_INTERVALS', 'BPM_DT_FMT', 'DATA_DIR', 'DateFormatter', 'FILENAME_BPM', 'FILENAME_QMBOX', 'FILENAME_SEC', 'In', 'Line2D', 'Out', 'Patch', 'QMBOX_DT_FMT', 'SEC_DT_FMT', 'SyncDatasets', 'abspath', 'ctime', 'cycle', 'datetime', 'deque', 'division', 'exit', 'get_ipython', 'item', 'join', 'np', 'plt', 'print_function', 'quit', 'rc', 'timedelta', 'vl_init', 'vl_init', 'warnings'].

Beam Parameters

In order to estimate the detectors charge collection efficiency, a good knowledge of the parameters of the beam is essential. These parameters were provided by the IRRAD facility, and included beam intensity and beam position measurements.

Beam Intensity

The beam intensity measurements was performed by a Secondary Emission Chamber, whose collected charge was continuously uploaded to CERNs logging database. The variable used to retrieve the data was MSC01.ZT8.107:COUNTS. In the following, data are loaded and displayed after removal of outliars. As outliars are considered entries with $counts\lt5000$.

Load & clean data


In [10]:
data = np.loadtxt(FILENAME_SEC, dtype=str, delimiter=',', unpack=True)
ts = data[0]
sec = np.asarray(data[1]).astype(np.float)

# Cleaning of sec data
# Values below 5000 counts for SEC will be considered invalid
SEC_LOW_LIM = 5000

vi = np.where(sec > SEC_LOW_LIM)[0]     # valid indexes

print('Total entries: %d, Valid entries: %d, Invalid: %d' % (data[0].size, vi.size, sec.size - vi.size))

ts = ts[vi]
sec = sec[vi]
dt = np.array([datetime.strptime(item, SEC_DT_FMT) for item in ts])


Total entries: 117055, Valid entries: 116668, Invalid: 387

Save to file


In [ ]:
res = np.array([ts, sec])
fn = 'sec_counts_proc.csv'
np.savetxt(fn, np.transpose(res), fmt='%s', delimiter=',')
print('File saved at:\n\t%s' % abspath(fn))